<?php
//$cid = Swoole\Coroutine::create(function () {
//    co::sleep(1);
//    echo "协程1 cid: ". co::getCid().PHP_EOL;
//});
//
//go(function ()  {
//    echo "携程2 cid:" . co::getCid().PHP_EOL;
//    $ccid = go(function () {
//        co::sleep(1);
//        echo "携程2-1 ccid：". co::getCid().PHP_EOL;
//    });
//    echo "携程2-1 pcid:" . co::getPcid($ccid).PHP_EOL;
//});
//
//echo $cid.PHP_EOL;


//$cid1 = go(function (){
//    echo "携程1开始 \n";
//    co::yield();
//    echo "携程1结束\n";
//});
//
//$cid2 = go(function () use ($cid1){
//    echo "携程2开始\n";
//    co::resume($cid1);
//    echo "携程2结束\n";
//});


//go(function () {
//    defer(function () {
//       echo "程序1结束 \n";
//    });
//    defer(function () {
//       echo "程序2结束 \n";
//    });
//    throw new Exception("啊实打实的");
//});



//Swoole\Coroutine\run(function(){
//    $cid = go(function(){
//        echo co::getCid() , " 开始", PHP_EOL;
//        co::sleep(10);
//        var_dump(co::isCanceled());
//        echo co::getCid() , " 结束", PHP_EOL;
//    });
//    co::cancel($cid);
//});



//$start_time = microtime(true);
//Swoole\Coroutine\run(function () {
//   co::join([
//      go(function () {
//          sleep(3);
//          echo "1 \n";
//      }),
//       go(function () {
//           sleep(4);
//           echo "2 \n";
//       })
//   ],1);
//});
//
//echo microtime(true) - $start_time, PHP_EOL;

$start_time = microtime(true);
Swoole\Coroutine\run(function () {
    $results = Swoole\Coroutine\batch([
        'func1'=>function(){sleep(1);return 'func1 ok';},
        'func2'=>function(){sleep(2);return 'func2 ok';},
        'func3'=>function(){sleep(3);return 'func3 ok';}
    ],5);
    var_dump($results);
});
echo microtime(true) - $start_time, PHP_EOL;